<!DOCTYPE html>
<html><head>

    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    
    <link rel="alternate" type="application/rss+xml" href="/jenkins/index.xml" title="h-book" />
    <link rel="canonical" href="/jenkins/">

    <title>
        
        Jenkins | h-book
        
    </title>

    
    <link href="/css/fontawesome.min.css" rel="stylesheet">

    
    <link rel="stylesheet" href="/css/ace.min.css">

    

    

</head>
<body><nav class="navbar navbar-expand-lg navbar-dark bg-primary shadow sticky-top" id="navbarMain">
    <div class="container">
        <div>
            <a class="navbar-brand" href="/">
                
                h-book
            </a>
        </div>
    </div>
</nav>
<div class="container-fluid">
            <div class="row">

                <div class="docs-sidenav order-0 col-12 col-md-3 col-lg-2 col-xl-2 position-sticky border-right"><nav class="navbar navbar-expand-md navbar-light pl-0">
    <button class="navbar-toggler navbar-toggler-right collapsed" type="button" data-toggle="collapse" data-target="#sidenav-left-collapse" aria-controls="sidenav-left-collapse" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>

     <div class="collapse navbar-collapse align-items-start flex-column" id="sidenav-left-collapse">
            <form class="form-inline my-2 my-lg-0 searchbox">
                <input class="form-control mr-sm-2 w-100" data-search-input id="search-by" type="text" placeholder="Search">
            </form>

        

         <ul class="navbar-nav flex-column pt-3">
    <li data-nav-id="/hugo/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/hugo/"><h6>Hugo</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/hugo/init/" class="nav-item my-1">
                
                
                  <a href="/hugo/init/" class="nav-link p-0">
                    init
                  </a>
                
        </li>
        <li data-nav-id="/hugo/add-page/" class="nav-item my-1">
                
                
                  <a href="/hugo/add-page/" class="nav-link p-0">
                    add-page
                  </a>
                
        </li>
        <li data-nav-id="/hugo/edit-skill/" class="nav-item my-1">
                
                
                  <a href="/hugo/edit-skill/" class="nav-link p-0">
                    edit-skill
                  </a>
                
        </li>
        <li data-nav-id="/hugo/publish/" class="nav-item my-1">
                
                
                  <a href="/hugo/publish/" class="nav-link p-0">
                    publish
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/android/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/android/"><h6>Android</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/android/install/" class="nav-item my-1">
                
                
                  <a href="/android/install/" class="nav-link p-0">
                    install
                  </a>
                
        </li>
        <li data-nav-id="/android/create-project/" class="nav-item my-1">
                
                
                  <a href="/android/create-project/" class="nav-link p-0">
                    create project
                  </a>
                
        </li>
        <li data-nav-id="/android/import-material/" class="nav-item my-1">
                
                
                  <a href="/android/import-material/" class="nav-link p-0">
                    import material
                  </a>
                
        </li>
        <li data-nav-id="/android/start-page/" class="nav-item my-1">
                
                
                  <a href="/android/start-page/" class="nav-link p-0">
                    startpage
                  </a>
                
        </li>
        <li data-nav-id="/android/i18n/" class="nav-item my-1">
                
                
                  <a href="/android/i18n/" class="nav-link p-0">
                    i18n
                  </a>
                
        </li>
        <li data-nav-id="/android/nav-flat-page/" class="nav-item my-1">
                
                
                  <a href="/android/nav-flat-page/" class="nav-link p-0">
                    nav flat page
                  </a>
                
        </li>
        <li data-nav-id="/android/activity/" class="nav-item my-1">
                
                
                  <a href="/android/activity/" class="nav-link p-0">
                    Activity
                  </a>
                
        </li>
        <li data-nav-id="/android/db/" class="nav-item my-1">
                
                
                  <a href="/android/db/" class="nav-link p-0">
                    DB
                  </a>
                
        </li>
        <li data-nav-id="/android/dialog/" class="nav-item my-1">
                
                
                  <a href="/android/dialog/" class="nav-link p-0">
                    Dialog
                  </a>
                
        </li>
        <li data-nav-id="/android/fragment/" class="nav-item my-1">
                
                
                  <a href="/android/fragment/" class="nav-link p-0">
                    Fragment
                  </a>
                
        </li>
        <li data-nav-id="/android/jetpack/" class="nav-item my-1">
                
                
                  <a href="/android/jetpack/" class="nav-link p-0">
                    Jetpack
                  </a>
                
        </li>
        <li data-nav-id="/android/material/" class="nav-item my-1">
                
                
                  <a href="/android/material/" class="nav-link p-0">
                    Material
                  </a>
                
        </li>
        <li data-nav-id="/android/storage/" class="nav-item my-1">
                
                
                  <a href="/android/storage/" class="nav-link p-0">
                    Storage
                  </a>
                
        </li>
        <li data-nav-id="/android/%E5%9B%BE%E6%A0%87/" class="nav-item my-1">
                
                
                  <a href="/android/%E5%9B%BE%E6%A0%87/" class="nav-link p-0">
                    图标
                  </a>
                
        </li>
        <li data-nav-id="/android/store/" class="nav-item my-1">
                
                
                  <a href="/android/store/" class="nav-link p-0">
                    Store
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/blender/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/blender/"><h6>Blender</h6></a>
        
    </li>
    <li data-nav-id="/bootstrap/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/bootstrap/"><h6>BootStrap</h6></a>
        
    </li>
    <li data-nav-id="/centos7/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/centos7/"><h6>Centos7</h6></a>
        
    </li>
    <li data-nav-id="/dlna/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/dlna/"><h6>DLNA</h6></a>
        
    </li>
    <li data-nav-id="/docker/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/docker/"><h6>Docker</h6></a>
        
    </li>
    <li data-nav-id="/dubbo/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/dubbo/"><h6>Dubbo</h6></a>
        
    </li>
    <li data-nav-id="/ffmpeg/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/ffmpeg/"><h6>FFmpeg</h6></a>
        
    </li>
    <li data-nav-id="/git/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/git/"><h6>Git</h6></a>
        
    </li>
    <li data-nav-id="/gitbook/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/gitbook/"><h6>Gitbook</h6></a>
        
    </li>
    <li data-nav-id="/gitlab/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/gitlab/"><h6>Gitlab</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/gitlab/runner/" class="nav-item my-1">
                
                
                  <a href="/gitlab/runner/" class="nav-link p-0">
                    Runner
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/gradle/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/gradle/"><h6>Gradle</h6></a>
        
    </li>
    <li data-nav-id="/java/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/java/"><h6>Java</h6></a>
        
    </li>
    <li data-nav-id="/jenkins/" class="nav-item my-1 active
        ">
        
        
          <a class="nav-link p-0" href="/jenkins/"><h6>Jenkins</h6></a>
        
    </li>
    <li data-nav-id="/kubernetes/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/kubernetes/"><h6>Kubernetes</h6></a>
        
    </li>
    <li data-nav-id="/mybatis/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/mybatis/"><h6>Mybatis</h6></a>
        
    </li>
    <li data-nav-id="/mybatis-plus/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/mybatis-plus/"><h6>Mybatis Plus</h6></a>
        
    </li>
    <li data-nav-id="/mysql/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/mysql/"><h6>MySQL</h6></a>
        
    </li>
    <li data-nav-id="/nodejs/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/nodejs/"><h6>Node.js</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/nodejs/npm/" class="nav-item my-1">
                
                
                  <a href="/nodejs/npm/" class="nav-link p-0">
                    NPM
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/postgresql/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/postgresql/"><h6>PostgreSQL</h6></a>
        
    </li>
    <li data-nav-id="/redis/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/redis/"><h6>Redis</h6></a>
        
    </li>
    <li data-nav-id="/samba/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/samba/"><h6>Samba</h6></a>
        
    </li>
    <li data-nav-id="/sql/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/sql/"><h6>SQL</h6></a>
        
    </li>
    <li data-nav-id="/ue5/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/ue5/"><h6>UE5</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/ue5/install/" class="nav-item my-1">
                
                
                  <a href="/ue5/install/" class="nav-link p-0">
                    install
                  </a>
                
        </li>
        <li data-nav-id="/ue5/uninstall/" class="nav-item my-1">
                
                
                  <a href="/ue5/uninstall/" class="nav-link p-0">
                    uninstall
                  </a>
                
        </li>
        <li data-nav-id="/ue5/qa/" class="nav-item my-1">
                
                
                  <a href="/ue5/qa/" class="nav-link p-0">
                    Q&amp;A
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity/"><h6>Unity</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity/install/" class="nav-item my-1">
                
                
                  <a href="/unity/install/" class="nav-link p-0">
                    install
                  </a>
                
        </li>
        <li data-nav-id="/unity/scene/" class="nav-item my-1">
                
                
                  <a href="/unity/scene/" class="nav-link p-0">
                    scene
                  </a>
                
        </li>
        <li data-nav-id="/unity/inspector/" class="nav-item my-1">
                
                
                  <a href="/unity/inspector/" class="nav-link p-0">
                    inspector
                  </a>
                
        </li>
        <li data-nav-id="/unity/assets/" class="nav-item my-1">
                
                
                  <a href="/unity/assets/" class="nav-link p-0">
                    assets
                  </a>
                
        </li>
        <li data-nav-id="/unity/audio-source/" class="nav-item my-1">
                
                
                  <a href="/unity/audio-source/" class="nav-link p-0">
                    audio source
                  </a>
                
        </li>
        <li data-nav-id="/unity/camera/" class="nav-item my-1">
                
                
                  <a href="/unity/camera/" class="nav-link p-0">
                    camera
                  </a>
                
        </li>
        <li data-nav-id="/unity/script/" class="nav-item my-1">
                
                
                  <a href="/unity/script/" class="nav-link p-0">
                    script
                  </a>
                
        </li>
        <li data-nav-id="/unity/prefabs/" class="nav-item my-1">
                
                
                  <a href="/unity/prefabs/" class="nav-link p-0">
                    prefabs
                  </a>
                
        </li>
        <li data-nav-id="/unity/physics/" class="nav-item my-1">
                
                
                  <a href="/unity/physics/" class="nav-link p-0">
                    physics
                  </a>
                
        </li>
        <li data-nav-id="/unity/skybox/" class="nav-item my-1">
                
                
                  <a href="/unity/skybox/" class="nav-link p-0">
                    skybox
                  </a>
                
        </li>
        <li data-nav-id="/unity/particle-system/" class="nav-item my-1">
                
                
                  <a href="/unity/particle-system/" class="nav-link p-0">
                    particle system
                  </a>
                
        </li>
        <li data-nav-id="/unity/shortcut-keys/" class="nav-item my-1">
                
                
                  <a href="/unity/shortcut-keys/" class="nav-link p-0">
                    shortcut keys
                  </a>
                
        </li>
        <li data-nav-id="/unity/qa/" class="nav-item my-1">
                
                
                  <a href="/unity/qa/" class="nav-link p-0">
                    Q&amp;A
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity-2d-beginner/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity-2d-beginner/"><h6>Unity 2D Beginner</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity-2d-beginner/init-and-move/" class="nav-item my-1">
                
                
                  <a href="/unity-2d-beginner/init-and-move/" class="nav-link p-0">
                    Init &amp; Move
                  </a>
                
        </li>
        <li data-nav-id="/unity-2d-beginner/map/" class="nav-item my-1">
                
                
                  <a href="/unity-2d-beginner/map/" class="nav-link p-0">
                    Map
                  </a>
                
        </li>
        <li data-nav-id="/unity-2d-beginner/data/" class="nav-item my-1">
                
                
                  <a href="/unity-2d-beginner/data/" class="nav-link p-0">
                    Data
                  </a>
                
        </li>
        <li data-nav-id="/unity-2d-beginner/animate/" class="nav-item my-1">
                
                
                  <a href="/unity-2d-beginner/animate/" class="nav-link p-0">
                    Data
                  </a>
                
        </li>
        <li data-nav-id="/unity-2d-beginner/bullet/" class="nav-item my-1">
                
                
                  <a href="/unity-2d-beginner/bullet/" class="nav-link p-0">
                    Bullet
                  </a>
                
        </li>
        <li data-nav-id="/unity-2d-beginner/cinemachine/" class="nav-item my-1">
                
                
                  <a href="/unity-2d-beginner/cinemachine/" class="nav-link p-0">
                    Cinemachine
                  </a>
                
        </li>
        <li data-nav-id="/unity-2d-beginner/particle/" class="nav-item my-1">
                
                
                  <a href="/unity-2d-beginner/particle/" class="nav-link p-0">
                    Particle
                  </a>
                
        </li>
        <li data-nav-id="/unity-2d-beginner/ui/" class="nav-item my-1">
                
                
                  <a href="/unity-2d-beginner/ui/" class="nav-link p-0">
                    UI
                  </a>
                
        </li>
        <li data-nav-id="/unity-2d-beginner/npc/" class="nav-item my-1">
                
                
                  <a href="/unity-2d-beginner/npc/" class="nav-link p-0">
                    NPC
                  </a>
                
        </li>
        <li data-nav-id="/unity-2d-beginner/sound/" class="nav-item my-1">
                
                
                  <a href="/unity-2d-beginner/sound/" class="nav-link p-0">
                    Sound
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity-2d-game-kit/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity-2d-game-kit/"><h6>Unity 2D Game Kit</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity-2d-game-kit/record/" class="nav-item my-1">
                
                
                  <a href="/unity-2d-game-kit/record/" class="nav-link p-0">
                    record
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity-3d-beginner/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity-3d-beginner/"><h6>Unity 3D Beginner</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity-3d-beginner/init/" class="nav-item my-1">
                
                
                  <a href="/unity-3d-beginner/init/" class="nav-link p-0">
                    Init
                  </a>
                
        </li>
        <li data-nav-id="/unity-3d-beginner/level/" class="nav-item my-1">
                
                
                  <a href="/unity-3d-beginner/level/" class="nav-link p-0">
                    Level
                  </a>
                
        </li>
        <li data-nav-id="/unity-3d-beginner/nav/" class="nav-item my-1">
                
                
                  <a href="/unity-3d-beginner/nav/" class="nav-link p-0">
                    Nav
                  </a>
                
        </li>
        <li data-nav-id="/unity-3d-beginner/render-pipeline/" class="nav-item my-1">
                
                
                  <a href="/unity-3d-beginner/render-pipeline/" class="nav-link p-0">
                    Render Pipeline
                  </a>
                
        </li>
        <li data-nav-id="/unity-3d-beginner/postprocessing/" class="nav-item my-1">
                
                
                  <a href="/unity-3d-beginner/postprocessing/" class="nav-link p-0">
                    PostProcessing
                  </a>
                
        </li>
        <li data-nav-id="/unity-3d-beginner/ui/" class="nav-item my-1">
                
                
                  <a href="/unity-3d-beginner/ui/" class="nav-link p-0">
                    UI
                  </a>
                
        </li>
        <li data-nav-id="/unity-3d-beginner/enemy/" class="nav-item my-1">
                
                
                  <a href="/unity-3d-beginner/enemy/" class="nav-link p-0">
                    Enemy
                  </a>
                
        </li>
        <li data-nav-id="/unity-3d-beginner/sound/" class="nav-item my-1">
                
                
                  <a href="/unity-3d-beginner/sound/" class="nav-link p-0">
                    Sound
                  </a>
                
        </li>
        <li data-nav-id="/unity-3d-beginner/%E5%BB%BA%E6%A8%A1%E5%B7%A5%E5%85%B7/" class="nav-item my-1">
                
                
                  <a href="/unity-3d-beginner/%E5%BB%BA%E6%A8%A1%E5%B7%A5%E5%85%B7/" class="nav-link p-0">
                    建模工具
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity-arpg/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity-arpg/"><h6>Unity ARPG</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity-arpg/init/" class="nav-item my-1">
                
                
                  <a href="/unity-arpg/init/" class="nav-link p-0">
                    Init
                  </a>
                
        </li>
        <li data-nav-id="/unity-arpg/role-state-machine/" class="nav-item my-1">
                
                
                  <a href="/unity-arpg/role-state-machine/" class="nav-link p-0">
                    Role State Machine
                  </a>
                
        </li>
        <li data-nav-id="/unity-arpg/api-piece/" class="nav-item my-1">
                
                
                  <a href="/unity-arpg/api-piece/" class="nav-link p-0">
                    API Piece
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity-creativecore-animation/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity-creativecore-animation/"><h6>Unity Creativecore Animation</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity-creativecore-animation/door/" class="nav-item my-1">
                
                
                  <a href="/unity-creativecore-animation/door/" class="nav-link p-0">
                    Door
                  </a>
                
        </li>
        <li data-nav-id="/unity-creativecore-animation/init/" class="nav-item my-1">
                
                
                  <a href="/unity-creativecore-animation/init/" class="nav-link p-0">
                    Init
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity-creativecore-lighting/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity-creativecore-lighting/"><h6>Unity Creativecore Lighting</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity-creativecore-lighting/init/" class="nav-item my-1">
                
                
                  <a href="/unity-creativecore-lighting/init/" class="nav-link p-0">
                    Init
                  </a>
                
        </li>
        <li data-nav-id="/unity-creativecore-lighting/outdoor/" class="nav-item my-1">
                
                
                  <a href="/unity-creativecore-lighting/outdoor/" class="nav-link p-0">
                    Outdoor
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity-creativecore-shader/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity-creativecore-shader/"><h6>Unity Creativecore Shader</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity-creativecore-shader/init/" class="nav-item my-1">
                
                
                  <a href="/unity-creativecore-shader/init/" class="nav-link p-0">
                    Init
                  </a>
                
        </li>
        <li data-nav-id="/unity-creativecore-shader/glass/" class="nav-item my-1">
                
                
                  <a href="/unity-creativecore-shader/glass/" class="nav-link p-0">
                    Glass
                  </a>
                
        </li>
        <li data-nav-id="/unity-creativecore-shader/shader-graph/" class="nav-item my-1">
                
                
                  <a href="/unity-creativecore-shader/shader-graph/" class="nav-link p-0">
                    Shader-Graph
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity-creator-kit-beginner-code/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity-creator-kit-beginner-code/"><h6>Unity Creator Kit Beginner Code</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity-creator-kit-beginner-code/record/" class="nav-item my-1">
                
                
                  <a href="/unity-creator-kit-beginner-code/record/" class="nav-link p-0">
                    record
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity-creator-kit-fps/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity-creator-kit-fps/"><h6>Unity Creator Kit FPS</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity-creator-kit-fps/record/" class="nav-item my-1">
                
                
                  <a href="/unity-creator-kit-fps/record/" class="nav-link p-0">
                    record
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity-mythirdperson/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity-mythirdperson/"><h6>Unity My Third Person</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity-mythirdperson/init/" class="nav-item my-1">
                
                
                  <a href="/unity-mythirdperson/init/" class="nav-link p-0">
                    Init
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity-playground/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity-playground/"><h6>Unity Playground</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity-playground/record/" class="nav-item my-1">
                
                
                  <a href="/unity-playground/record/" class="nav-link p-0">
                    record
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity-ui/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity-ui/"><h6>Unity UI</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity-ui/init/" class="nav-item my-1">
                
                
                  <a href="/unity-ui/init/" class="nav-link p-0">
                    record
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/unity-vfx/" class="nav-item my-1 haschildren
        ">
        
        
          <a class="nav-link p-0" href="/unity-vfx/"><h6>Unity VFX</h6></a>
        
        <ul class="list-unstyled ml-2">
        <li data-nav-id="/unity-vfx/init/" class="nav-item my-1">
                
                
                  <a href="/unity-vfx/init/" class="nav-link p-0">
                    record
                  </a>
                
        </li>
        <li data-nav-id="/unity-vfx/bullet/" class="nav-item my-1">
                
                
                  <a href="/unity-vfx/bullet/" class="nav-link p-0">
                    bullet
                  </a>
                
        </li>
        <li data-nav-id="/unity-vfx/rain/" class="nav-item my-1">
                
                
                  <a href="/unity-vfx/rain/" class="nav-link p-0">
                    rain
                  </a>
                
        </li>
        <li data-nav-id="/unity-vfx/rock-rain/" class="nav-item my-1">
                
                
                  <a href="/unity-vfx/rock-rain/" class="nav-link p-0">
                    Rock Rain
                  </a>
                
        </li>
        </ul>
    </li>
    <li data-nav-id="/vue/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/vue/"><h6>Vue</h6></a>
        
    </li>
    <li data-nav-id="/web/" class="nav-item my-1
        ">
        
        
          <a class="nav-link p-0" href="/web/"><h6>Web</h6></a>
        
    </li>
        </ul>
    </div>
</nav>


</div>
                <div class="docs-toc large order-lg-2 order-md-0 order-xs-1 col-12 col-lg-2 col-xl-2 position-sticky border-left"><div class="docs-toc">
	<nav id="TableOfContents">
  <ul>
    <li><a href="#搭建离线平台">搭建离线平台</a></li>
    <li><a href="#结合gitlab">结合gitlab</a></li>
    <li><a href="#jenkinsfile">Jenkinsfile</a>
      <ul>
        <li><a href="#jenkinsfile-agent-docker">Jenkinsfile agent docker</a></li>
      </ul>
    </li>
    <li><a href="#前后端部署">前后端部署</a></li>
  </ul>
</nav>
</div>
</div>
                <div class="main col-12 order-1 col-md-9 col-lg-10 col-xl-8 py-3">
                

<div class="d-flex flex-column">
    <h1 class="js-title">Jenkins</h1>
    <div class="d-flex align-items-center">
        
    </div>
</div>

<hr>


<p><a href="https://jenkins.io">https://jenkins.io</a></p>
<p><a href="https://hub.docker.com/r/jenkins/jenkins">https://hub.docker.com/r/jenkins/jenkins</a></p>
<p><a href="https://hub.docker.com/r/jenkins/blueocean">https://hub.docker.com/r/jenkins/blueocean</a></p>
<h2 id="搭建离线平台">搭建离线平台</h2>
<ul>
<li>在线下载插件</li>
</ul>
<p>按照官网下载并启动程序，下载插件，将plugins文件夹拷贝（*.jpi）</p>
<ul>
<li>准备环境</li>
</ul>
<p>jenkins官网下载jenkins.war</p>
<p>gradle官网下载 <code>gradle-&lt;version&gt;-&lt;all/bin&gt;.zip</code></p>
<p>docker仓库下载 <code>java:&lt;version&gt;</code></p>
<ul>
<li>制作镜像</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-Dockerfile" data-lang="Dockerfile"><span style="display:flex;"><span><span style="color:#75715e"># docker build -t jenkins:base .</span><span style="color:#960050;background-color:#1e0010">
</span></span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010"></span><span style="color:#75715e"># docker run -d --name jenkins -p 48080:8080 jenkins:base</span><span style="color:#960050;background-color:#1e0010">
</span></span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010"></span><span style="color:#00a8c8">FROM</span><span style="color:#d88200"> java:8</span><span style="color:#960050;background-color:#1e0010">
</span></span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">
</span></span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010"></span><span style="color:#00a8c8">WORKDIR</span><span style="color:#d88200"> /root</span><span style="color:#960050;background-color:#1e0010">
</span></span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">
</span></span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010"></span><span style="color:#00a8c8">RUN</span> mkdir -p .jenkins/plugins<span style="color:#960050;background-color:#1e0010">
</span></span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">
</span></span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010"></span><span style="color:#00a8c8">ADD</span> jenkins.war /root<span style="color:#960050;background-color:#1e0010">
</span></span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010"></span><span style="color:#00a8c8">ADD</span> plugins /root/.jenkins/plugins<span style="color:#960050;background-color:#1e0010">
</span></span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">
</span></span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010"></span><span style="color:#00a8c8">ENV</span> <span style="color:#111">TZ</span><span style="color:#f92672">=</span>Asia/Shanghai<span style="color:#960050;background-color:#1e0010">
</span></span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">
</span></span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010"></span><span style="color:#00a8c8">CMD</span> java -Dorg.jenkinsci.plugins.durabletask.BourneShellScript.LAUNCH_DIAGNOSTICS<span style="color:#f92672">=</span><span style="color:#111">true</span> -jar jenkins.war --httpPort<span style="color:#f92672">=</span><span style="color:#ae81ff">8080</span><span style="color:#960050;background-color:#1e0010">
</span></span></span></code></pre></div><div class="highlight"><pre tabindex="0" style="color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-Dockerfile" data-lang="Dockerfile"><span style="display:flex;"><span><span style="color:#75715e"># docker build -t jenkins:gradle-3.5.1 .</span><span style="color:#960050;background-color:#1e0010">
</span></span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010"></span><span style="color:#75715e"># docker run -d --name jenkins -p 48080:8080 jenkins:gradle-3.5.1</span><span style="color:#960050;background-color:#1e0010">
</span></span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010"></span><span style="color:#00a8c8">FROM</span><span style="color:#d88200"> jenkins:base</span><span style="color:#960050;background-color:#1e0010">
</span></span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">
</span></span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010"></span><span style="color:#00a8c8">ADD</span> gradle-3.5.1.zip /root<span style="color:#960050;background-color:#1e0010">
</span></span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">
</span></span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010"></span><span style="color:#00a8c8">RUN</span> unzip gradle-3.5.1.zip <span style="color:#f92672">&amp;&amp;</span> <span style="color:#8045ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#8045ff"></span>    rm -f gradle-3.5.1.zip <span style="color:#f92672">&amp;&amp;</span> <span style="color:#8045ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#8045ff"></span>    chmod <span style="color:#ae81ff">755</span> -R gradle-3.5.1<span style="color:#960050;background-color:#1e0010">
</span></span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">
</span></span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010"></span><span style="color:#00a8c8">ENV</span> <span style="color:#111">GRADLE_HOME</span><span style="color:#f92672">=</span>/root/gradle-3.5.1<span style="color:#960050;background-color:#1e0010">
</span></span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010"></span><span style="color:#00a8c8">ENV</span> <span style="color:#111">PATH</span><span style="color:#f92672">=</span><span style="color:#111">$PATH</span>:<span style="color:#111">$GRADLE_HOME</span>/bin<span style="color:#960050;background-color:#1e0010">
</span></span></span></code></pre></div><ul>
<li>启动jenkins</li>
</ul>
<p>docker run -d &ndash;name jenkins -p 48080:8080 jenkins:gradle-3.5.1</p>
<p>docker logs jenkins</p>
<p>浏览器打开并输入logs看到的password</p>
<p>跳过插件</p>
<p>创建root用户</p>
<h2 id="结合gitlab">结合gitlab</h2>
<ul>
<li>搭建gitlab环境</li>
</ul>
<p>docker仓库下载 <code>docker.io/gitlab/gitlab-ce:&lt;version&gt;</code></p>
<p>启动gitlab</p>
<p>docker run -d &ndash;name gitlab -p 40080:80 gitlab:10.5.4</p>
<p>浏览器进入并创建root密码和一般用户</p>
<ul>
<li>创建gitlab工程</li>
</ul>
<p>登录root用户创建工程，并将一般用户添加进工程授予master权限</p>
<p>使用一般用户用户git clone下工程，并提交spring boot工程代码</p>
<ul>
<li>创建jenkins工程</li>
</ul>
<p>仅创建空工程</p>
<p>new item-&gt;输入名字-&gt;选择流水线-&gt;ok-&gt;save</p>
<p>配置SCM</p>
<p>首页-&gt;点击工程名字-&gt;Configure-&gt;</p>
<p>pipeline板块-&gt;Definition选pipeline script from scm-&gt;scm板块选git-&gt;</p>
<p>Repositories板块-&gt;Repository URL填写gitlab工程地址</p>
<p>Credentials板块-&gt;新增账户-&gt;全局凭据、用户名和密码、全局、gitlab的root账户名称、gitlab的root账户密码-&gt;选中刚创建的账户</p>
<p>save</p>
<p>处理gitlab的webhook，当gitlab执行特定（详见勾选后展开的选项和信息）操作和Comment时触发工程任务</p>
<p>首页-&gt;点击工程名字-&gt;Configure-&gt;</p>
<p>build triggers板块-&gt;勾选Build when a change is pushed to GitLab. GitLab webhook URL: <code>&lt;url&gt;</code></p>
<p>save</p>
<p>手动启动工程任务</p>
<p>首页-&gt;点击工程名字-&gt;Build Now-&gt;Status</p>
<ul>
<li>配置gitlab</li>
</ul>
<p>gitlab发起webhook触发jenkins工程</p>
<p>root登录-&gt;首页-&gt;点击工程名字-&gt;settings-&gt;integrations-&gt;</p>
<p>输入jenkins build triggers板块中&hellip;pushed to GitLab&hellip;<code>&lt;url&gt;</code>的url</p>
<p>去掉勾Enable SSL verification</p>
<p>add wobhook</p>
<p>生成调用gitlab的认证token</p>
<p>root登录-&gt;首页-&gt;头像-&gt;setting-&gt;Access Tokens-&gt;</p>
<p>name填写root</p>
<p>scopes至少勾api</p>
<p>create personal access token-&gt;copy</p>
<ul>
<li>配置jenkins</li>
</ul>
<p>免去gitlab发起webhook的认证信息</p>
<p>首页-&gt;manage jenkins-&gt;configure system-&gt;gitlab板块-&gt;去掉勾Enable authentication for &lsquo;/project&rsquo; end-point-&gt;save</p>
<p>配置调用gitlab的认证token</p>
<p>jenkins-&gt;manage jenkins-&gt;configure system-&gt;gitlab-&gt;</p>
<p>connection name填写root</p>
<p>gitlab host url填写gitlab url</p>
<p>credentials板块Add-&gt;kind: gitlab api token-&gt;api token: <code>&lt;gitlab的认证token&gt;</code>-&gt;Add-&gt;选gitlab api token</p>
<p>Publish over SSH</p>
<p>首页-&gt;manage jenkins-&gt;configure system-&gt;Publish over SSH板块-&gt;</p>
<p>SSH Servers板块add</p>
<p>name填目标机器名称</p>
<p>hostname填目标机器ip</p>
<p>username填目标机器用户</p>
<p>Remote Directory填目标机器目标目录（建议填根目录，然后在Publish over SSH对应的ui或Jenkinsfile填真正目标路径）</p>
<p>advanced</p>
<p>勾选Use password authentication, or use a different key</p>
<p>Passphrase / Password填目标机器密码</p>
<p>save</p>
<h2 id="jenkinsfile">Jenkinsfile</h2>
<p>声明式和脚本式流水线都是DSL语言。片段生成器<code>http://&lt;ip&gt;:&lt;port&gt;/pipeline-syntax/</code></p>
<p>放代码工程顶级目录下</p>
<pre tabindex="0"><code class="language-Jenkinsfile" data-lang="Jenkinsfile">pipeline {
    agent any
    stages {
        stage(&#34;build&#34;) {
            steps {
                timeout(time: 5, unit: &#34;MINUTES&#34;) {
                    retry(2) {
                        sh &#34;gradle build --no-daemon&#34;
                    }
                }
            }
            post {
                always {
                    echo &#34;This will always run&#34;
                }
                success {
                    echo &#34;This will run only if successful&#34;
                    archiveArtifacts artifacts: &#34;build/libs/**/*.*&#34;, excludes: &#34;build/libs/**/*.original&#34;, fingerprint: true, onlyIfSuccessful: true
                }
                failure {
                    echo &#34;This will run only if failed&#34;
                }
                unstable {
                    echo &#34;This will run only if the run was marked as unstable&#34;
                }
                changed {
                    echo &#34;This will run only if the state of the Pipeline has changed&#34;
                    echo &#34;For example, if the Pipeline was previously failing but is now successful&#34;
                }
            }
        }
        stage(&#34;remote stop &amp; clean&#34;) {
            steps {
                sshPublisher(
                    failOnError: true, 
                    publishers: [
                        sshPublisherDesc(
                            configName: &#34;server120&#34;, 
                            transfers: [
                                sshTransfer(cleanRemote: false, excludes: &#34;&#34;, execCommand: &#34;&#34;, execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: &#34;[, ]+&#34;, remoteDirectory: &#34;/opt/my-program&#34;, remoteDirectorySDF: false, removePrefix: &#34;&#34;, sourceFiles: &#34;stop.sh&#34;),
                                sshTransfer(cleanRemote: false, excludes: &#34;&#34;, execCommand: &#34;chmod 755 /opt/my-program/stop.sh &amp;&amp; bash /opt/my-program/stop.sh &amp;&amp; rm -rf /opt/my-program&#34;, execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: &#34;[, ]+&#34;, remoteDirectory: &#34;&#34;, remoteDirectorySDF: false, removePrefix: &#34;&#34;, sourceFiles: &#34;&#34;)
                            ], 
                            usePromotionTimestamp: false, 
                            useWorkspaceInPromotion: false, 
                            verbose: false
                        )
                    ]
                )
            }
            post {
                always {
                    echo &#34;This will always run&#34;
                }
                success {
                    echo &#34;This will run only if successful&#34;
                }
                failure {
                    echo &#34;This will run only if failed&#34;
                }
                unstable {
                    echo &#34;This will run only if the run was marked as unstable&#34;
                }
                changed {
                    echo &#34;This will run only if the state of the Pipeline has changed&#34;
                    echo &#34;For example, if the Pipeline was previously failing but is now successful&#34;
                }
            }
        }
        stage(&#34;remote deploy &amp; start&#34;) {
            steps {
                sshPublisher(
                    failOnError: true, 
                    publishers: [
                        sshPublisherDesc(
                            configName: &#34;server120&#34;, 
                            transfers: [
                                sshTransfer(cleanRemote: false, excludes: &#34;&#34;, execCommand: &#34;&#34;, execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: &#34;[, ]+&#34;, remoteDirectory: &#34;/opt/my-program&#34;, remoteDirectorySDF: false, removePrefix: &#34;build/libs&#34;, sourceFiles: &#34;build/libs/**/*.*&#34;), 
                                sshTransfer(cleanRemote: false, excludes: &#34;&#34;, execCommand: &#34;&#34;, execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: &#34;[, ]+&#34;, remoteDirectory: &#34;/opt/my-program&#34;, remoteDirectorySDF: false, removePrefix: &#34;&#34;, sourceFiles: &#34;start.sh&#34;),
                                sshTransfer(cleanRemote: false, excludes: &#34;&#34;, execCommand: &#34;chmod 755 /opt/my-program/start.sh &amp;&amp; printf &#39;\n&#39; | bash /opt/my-program/start.sh&#34;, execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: &#34;[, ]+&#34;, remoteDirectory: &#34;&#34;, remoteDirectorySDF: false, removePrefix: &#34;&#34;, sourceFiles: &#34;&#34;)
                            ], 
                            usePromotionTimestamp: false, 
                            useWorkspaceInPromotion: false, 
                            verbose: false
                        )
                    ]
                )
            }
            post {
                always {
                    echo &#34;This will always run&#34;
                }
                success {
                    echo &#34;This will run only if successful&#34;
                }
                failure {
                    echo &#34;This will run only if failed&#34;
                }
                unstable {
                    echo &#34;This will run only if the run was marked as unstable&#34;
                }
                changed {
                    echo &#34;This will run only if the state of the Pipeline has changed&#34;
                    echo &#34;For example, if the Pipeline was previously failing but is now successful&#34;
                }
            }
        }
    }
}
</code></pre><h3 id="jenkinsfile-agent-docker">Jenkinsfile agent docker</h3>
<p>个人理解：上面agent any原本是在本地（宿主机或容器中）执行命令，这些命令是在该环境有支撑（安装得有对应软件）。
而agent docker就是针对本地无环境支撑但仍要执行命里需求。
原理就是将job的目录挂载进容器，再对容器执行命令。</p>
<div class="highlight"><pre tabindex="0" style="color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>docker run -d <span style="color:#8045ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#8045ff"></span>    --name jenkins <span style="color:#8045ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#8045ff"></span>    -p 48080:8080 <span style="color:#8045ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#8045ff"></span>    -v /root/jenkins/workspace:/root/.jenkins <span style="color:#8045ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#8045ff"></span>    -v /var/run/docker.sock:/var/run/docker.sock <span style="color:#8045ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#8045ff"></span>    -v /usr/bin/docker:/usr/bin/docker <span style="color:#8045ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#8045ff"></span>    jenkins:gradle-3.5.1
</span></span></code></pre></div><pre tabindex="0"><code class="language-Jenkinsfile" data-lang="Jenkinsfile">pipeline {
    agent {
        docker &#34;node:6.11.0&#34;
    }
    stages {
        stage(&#34;build&#34;) {
            steps {
                sh &#34;pwd&#34;
                sh &#34;ls&#34;
                sh &#34;npm --version&#34;
                sh &#34;node --version&#34;
            }
        }
    }
}
</code></pre><p>离线技巧：对于node需要的node_modules可以手动复制到目录下（通过上面两板块定位具体位置）</p>
<h2 id="前后端部署">前后端部署</h2>
<p>方案</p>
<ol>
<li>编前编后，一起部署</li>
<li>编后编前，一起部署</li>
<li>编前部署，编后部署</li>
<li>编后部署，编前部署</li>
</ol>
<p>这里采用方案1</p>
<pre tabindex="0"><code class="language-Jenkinsfile" data-lang="Jenkinsfile">pipeline {
    agent none
    stages {
        stage(&#34;build web&#34;) {
            agent {
                docker &#34;node:6.11.0&#34;
            }
            steps {
                sh &#34;npm run build:prod&#34;
            }
            post {
                always {
                    echo &#34;This will always run&#34;
                }
                success {
                    echo &#34;This will run only if successful&#34;
                    archiveArtifacts artifacts: &#34;src/main/resources/static/**/*.*&#34;, excludes: &#34;&#34;, fingerprint: true, onlyIfSuccessful: true
                }
                failure {
                    echo &#34;This will run only if failed&#34;
                }
                unstable {
                    echo &#34;This will run only if the run was marked as unstable&#34;
                }
                changed {
                    echo &#34;This will run only if the state of the Pipeline has changed&#34;
                    echo &#34;For example, if the Pipeline was previously failing but is now successful&#34;
                }
            }
        }
        stage(&#34;build java&#34;) {
            agent any
            steps {
                timeout(time: 5, unit: &#34;MINUTES&#34;) {
                    retry(2) {
                        sh &#34;gradle build --no-daemon&#34;
                    }
                }
            }
            post {
                always {
                    echo &#34;This will always run&#34;
                }
                success {
                    echo &#34;This will run only if successful&#34;
                    archiveArtifacts artifacts: &#34;build/libs/**/*.*&#34;, excludes: &#34;build/libs/**/*.original&#34;, fingerprint: true, onlyIfSuccessful: true
                }
                failure {
                    echo &#34;This will run only if failed&#34;
                }
                unstable {
                    echo &#34;This will run only if the run was marked as unstable&#34;
                }
                changed {
                    echo &#34;This will run only if the state of the Pipeline has changed&#34;
                    echo &#34;For example, if the Pipeline was previously failing but is now successful&#34;
                }
            }
        }
        stage(&#34;remote stop &amp; clean&#34;) {
            agent any
            steps {
                sshPublisher(
                    failOnError: true, 
                    publishers: [
                        sshPublisherDesc(
                            configName: &#34;server120&#34;, 
                            transfers: [
                                sshTransfer(cleanRemote: false, excludes: &#34;&#34;, execCommand: &#34;&#34;, execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: &#34;[, ]+&#34;, remoteDirectory: &#34;/opt/my-program&#34;, remoteDirectorySDF: false, removePrefix: &#34;&#34;, sourceFiles: &#34;stop.sh&#34;),
                                sshTransfer(cleanRemote: false, excludes: &#34;&#34;, execCommand: &#34;chmod 755 /opt/my-program/stop.sh &amp;&amp; bash /opt/my-program/stop.sh &amp;&amp; rm -rf /opt/my-program&#34;, execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: &#34;[, ]+&#34;, remoteDirectory: &#34;&#34;, remoteDirectorySDF: false, removePrefix: &#34;&#34;, sourceFiles: &#34;&#34;)
                            ], 
                            usePromotionTimestamp: false, 
                            useWorkspaceInPromotion: false, 
                            verbose: false
                        )
                    ]
                )
            }
            post {
                always {
                    echo &#34;This will always run&#34;
                }
                success {
                    echo &#34;This will run only if successful&#34;
                }
                failure {
                    echo &#34;This will run only if failed&#34;
                }
                unstable {
                    echo &#34;This will run only if the run was marked as unstable&#34;
                }
                changed {
                    echo &#34;This will run only if the state of the Pipeline has changed&#34;
                    echo &#34;For example, if the Pipeline was previously failing but is now successful&#34;
                }
            }
        }
        stage(&#34;remote deploy &amp; start&#34;) {
            agent any
            steps {
                sshPublisher(
                    failOnError: true, 
                    publishers: [
                        sshPublisherDesc(
                            configName: &#34;server120&#34;, 
                            transfers: [
                                sshTransfer(cleanRemote: false, excludes: &#34;&#34;, execCommand: &#34;&#34;, execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: &#34;[, ]+&#34;, remoteDirectory: &#34;/opt/my-program&#34;, remoteDirectorySDF: false, removePrefix: &#34;build/libs&#34;, sourceFiles: &#34;build/libs/**/*.*&#34;), 
                                sshTransfer(cleanRemote: false, excludes: &#34;&#34;, execCommand: &#34;&#34;, execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: &#34;[, ]+&#34;, remoteDirectory: &#34;/opt/my-program&#34;, remoteDirectorySDF: false, removePrefix: &#34;&#34;, sourceFiles: &#34;start.sh&#34;),
                                sshTransfer(cleanRemote: false, excludes: &#34;&#34;, execCommand: &#34;chmod 755 /opt/my-program/start.sh &amp;&amp; printf &#39;\n&#39; | bash /opt/my-program/start.sh&#34;, execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: &#34;[, ]+&#34;, remoteDirectory: &#34;&#34;, remoteDirectorySDF: false, removePrefix: &#34;&#34;, sourceFiles: &#34;&#34;)
                            ], 
                            usePromotionTimestamp: false, 
                            useWorkspaceInPromotion: false, 
                            verbose: false
                        )
                    ]
                )
            }
            post {
                always {
                    echo &#34;This will always run&#34;
                }
                success {
                    echo &#34;This will run only if successful&#34;
                }
                failure {
                    echo &#34;This will run only if failed&#34;
                }
                unstable {
                    echo &#34;This will run only if the run was marked as unstable&#34;
                }
                changed {
                    echo &#34;This will run only if the state of the Pipeline has changed&#34;
                    echo &#34;For example, if the Pipeline was previously failing but is now successful&#34;
                }
            }
        }
    }
}
</code></pre>

    


                    
                    <div class="row"></div> 

                </div>

            </div> 

        </div> 
<script src="/lib/jquery.min.js"></script> 
<script src="/lib/popper.min.js"></script> 

<script src="/js/bootstrap.min.js"></script> 


<script type="text/javascript" src="/plugins/lunr.min.js"></script>
<script type="text/javascript" src="/plugins/auto-complete.js"></script>
<link href="/plugins/auto-complete.css" rel="stylesheet">
<script type="text/javascript">
  
      var baseurl = "\/";
  
</script>
<script type="text/javascript" src="/plugins/search.js"></script>

<script type="text/javascript" src="/plugins/favorites.js"></script>


<script type="text/javascript" src="/plugins/clipboard.js"></script>
<script>
  new ClipboardJS('.btn');
</script>
</body>
</html>
